<template>
  <div class="">
    <el-card>
      <el-table :data="allRoles" border style="width: 100%">
        <el-table-column
          :label="$t('msg.role.index')"
          type="index"
          width="120"
        />
        <el-table-column :label="$t('msg.role.name')" prop="title" />
        <el-table-column :label="$t('msg.role.desc')" prop="describe" />
        <el-table-column
          :label="$t('msg.role.action')"
          prop="action"
          width="260"
          v-slot="{ row }"
        >
          <el-button
            v-permission="['distributePermission']"
            type="primary"
            size="mini"
            @click="onDistributePermissionClick(row)"
          >
            {{ $t('msg.role.assignPermissions') }}
          </el-button>
        </el-table-column>
      </el-table>
    </el-card>
    <distribute-permission
      v-model="distributePermissionVisible"
      :role-id="selectRoleId"
    />
  </div>
</template>

<script setup>
  import { roleList } from '@/api/role'
  import { watchSwitchLang } from '@/utils/i18n'
  import { ref } from 'vue'
  import DistributePermission from './components/DistributePermission.vue'

  const allRoles = ref([])
  const getRoleList = async () => {
    allRoles.value = await roleList()
  }
  getRoleList()
  watchSwitchLang(getRoleList)
  /**
   * 分配权限
   */
  const selectRoleId = ref('')
  const distributePermissionVisible = ref(false)
  const onDistributePermissionClick = (row) => {
    distributePermissionVisible.value = true
    selectRoleId.value = row.id
  }
</script>

<style lang="scss" scoped></style>
